
#pragma once

#ifndef __MSCTRL_FTL_FILLING_HH__
#define __MSCTRL_FTL_FILLING_HH__

#include "ftl/allocator/abstract_allocator.hh"
#include "ftl/mapping/abstract_mapping.hh"

namespace MsCtrl::FTL {

class AbstractFTL;

class Filling : public Object {
 private:
  FTLObjectData &ftlobject;

 public:
  Filling(ObjectData &, FTLObjectData &);

  void start() noexcept;

  void getStatList(std::vector<Stat> &, std::string) noexcept override;
  void getStatValues(std::vector<double> &) noexcept override;
  void resetStatValues() noexcept override;
  void createCheckpoint(std::ostream &) const noexcept override;
  void restoreCheckpoint(std::istream &) noexcept override;
};

}  // namespace MsCtrl::FTL

#endif
